package org.ala.tree.lsm;

/**
 *
 * @author ala
 * @date 2025年5月28日
 */
public class KV<V> {
	protected String key;
	protected V val;
	/**
	 * 写kv时的时间戳，用于去重
	 * <p>	在MemTable里的KV无时间戳
	 * <p>	在SSTable里的KV取文件创建时间戳（根据文件创建时间戳，保留最后的LV）
	 */
	protected long timestamp;
	private KV(String k, V v) {this.key = k; this.val = v;}
	public static <V> KV<V> build(String key, V v) {
		return new KV<>(key, v);
	}
	public String getKey() {
		return key;
	}
	public void setKey(String key) {
		this.key = key;
	}
	public V getVal() {
		return val;
	}
	public void setVal(V val) {
		this.val = val;
	}
	public long getTimestamp() {
		return timestamp;
	}
	public void setTimestamp(long timestamp) {
		this.timestamp = timestamp;
	}
	public KV<V> timestamp(long timestamp) {
		setTimestamp(timestamp);
		return this;
	}
}
